﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;

namespace AlgorithmTest
{
    // T_[四个数字排序]_[算法名]
    public class T_0107_Generate : IAlgorithm
    {
        // 118. 杨辉三角

        // 给定一个非负整数 numRows，生成「杨辉三角」的前 numRows 行。
        // 在「杨辉三角」中，每个数是它左上方和右上方的数的和。

        // 提示:
        //  1 <= numRows <= 30

        public void Test()
        {
            // 算法参数定义
            var numRows = 3;
            // 算法执行与打印
            var res = Generate(numRows);
            foreach (var item in res)
            {
                foreach (var iitem in item)
                {
                    Console.Write(iitem + " ");
                }
                Console.WriteLine();
            }
        }

        // 算法
        public IList<IList<int>> Generate(int numRows)
        {
            var res = new List<IList<int>>();
            res.Add(new List<int> { 1 });
            for (int i = 1; i < numRows; i++)
                res.Add(GenerateRow(res.Last()));
            return res;
        }
        public IList<int> GenerateRow(IList<int> lastRow)
        {
            var res = new List<int>();
            res.Add(1);
            for (int i = 1; i < lastRow.Count; i++)
                res.Add(lastRow[i - 1] + lastRow[i]);
            res.Add(1);
            return res;
        }
    }
}
